Micron Document




Kernel debugger
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
A kernel debugger is a debugger present in some operating system kernels to ease debugging and kernel development by the kernel developers. A kernel debugger might be a stub implementing low-level operations, with a full-blown debugger such as GNU Debugger (gdb), running on another machine, sending commands to the stub over a serial line or a network connection, or it might provide a command line that can be used directly on the machine being debugged.

Operating systems and operating system kernels that contain a kernel debugger:

• The Windows NT family includes a kernel debugger named KD,cite-ref-1[1] which can act as a local debugger with limited capabilities (reading and writing kernel memory, and setting breakpoints)cite-ref-2[2] and can attach to a remote machine over a serial line, IEEE 1394 connection, USB 2.0 or USB 3.0 connection.cite-ref-3[3] The WinDbg GUI debugger can also be used to debug kernels on local and remote machines.
BeOS and Haiku include a kernel debugger usable with either an on-screen console or over a serial line. It features various commands to inspect memory, threads, and other kernel structures. In Haiku, the debugger is called "Kernel Debugging Land" (KDL).cite-ref-4[4]
Linux kernel; No kernel debugger was included in the mainline Linux tree prior to version 2.6.26-rc1 because Linus Torvalds didn't want a kernel debugger in the kernel.cite-ref-linus-5-0[5]cite-ref-6[6]

• KDB (local)cite-ref-kdb-7-0[7]
KGDB (remote)
• MDB (local/remote)cite-ref-8[8]cite-ref-9[9]cite-ref-10[10]

NetBSD has DDB for local and KGDB for remote.
macOS has ddb for local and kdp for remote.cite-ref-11[11]
OpenBSD includes ddb which has a syntax is similar to GNU Debugger.cite-ref-12[12]

References

cite-note-11. "Debugging Environments". Debugging Tools for Windows (WinDbg, KD, CDB, NTSD). Retrieved 16 February 2020.
cite-note-22. "Local Kernel-Mode Debugging". Retrieved 16 February 2020.
cite-note-33. "Live Kernel-Mode Debugging Using KD". Retrieved 16 January 2020.
cite-note-44. "Welcome to Kernel Debugging Land".
cite-note-linus-55. "LWN.net". Retrieved 29 May 2008.
cite-note-66. citereftorvalds2008Torvalds, Linus (3 May 2008). "Linux 2.6.26-rc1". LWN. Retrieved 9 March 2015.
cite-note-kdb-77. citerefnellitheerthaNellitheertha, Hariprasad. "Inside the Linux kernel debugger". IBM. Archived from the original on 21 June 2008. Retrieved 29 May 2008.
cite-note-88. "LWN Weekly Kernel News". 7 September 2008.
cite-note-99. "MDB Github Website". 1 January 2016. Archived from the original on 22 March 2016.
cite-note-1010. "LWN Weekly Kernel News". 28 June 2010.
cite-note-1111. citerefsingh2003Singh, Amit (December 2003). "XNU: The Kernel". What is Mac OS X?. Archived from the original on 2 June 2020. Retrieved 25 May 2012. the built-in low-level kernel debugger, ddb, is part of XNU's Mach component, and so is kdp, a remote kernel debugging protocol implementation
cite-note-1212. "ddb(4)". OpenBSD manual page server. 6 December 2019. Retrieved 13 December 2019. The ddb debugger provides a means for debugging the kernel, and analysing the kernel after a system crash ("panic"), with a gdb(1)-like syntax.